
const mongoose = require('mongoose')
const fs=require('fs')  //node的fs文件读写模块
const Router =require('koa-router')
let router =new Router()


// 导入商品详情数据
router.get('/insertAllGoodsInfo',async(ctx)=>{

  fs.readFile('./data_json/newGoods.json','utf8',(err,data)=>{  // ./data_json/newGoods.json 这个目录的路径写法，从service写起，好坑，坑了快一个小时
    data=JSON.parse(data)
    // console.log(err)
    // console.log(data,999)
    let saveCount=0
    const Goods=mongoose.model('Goods') //取得商品详情的建模
    data.map((val,index)=>{
      // console.log(val)
      let newGoods=new Goods(val)
      newGoods.save().then(()=>{
        saveCount++
        // console.log('成功'+saveCount)
      }).catch(err=>{
        console.log('失败'+err)
      })

    })

  })

  ctx.body='开始导入数据了'

})

// 导入商品大类数据
router.get('/insertAllCategory',async(ctx)=>{
  fs.readFile('./data_json/category.json','utf8',function(err,data){
    data=JSON.parse(data)
    const category=mongoose.model('category')
    let saveCount=0;
    data.RECORDS.map((value,index)=>{
      const newCategory=new category(value)
      newCategory.save().then(()=>{
        saveCount++
        console.log('成功'+saveCount)
      }).catch(err=>{
        console.log('失败'+err)
      })

    })

  })
  ctx.body='开始导入商品大类'
})

// 导入商品子类数据
router.get('/insertAllCategorySub',async(ctx)=>{
  fs.readFile('./data_json/category_sub.json','utf8',(err,data)=>{
    data=JSON.parse(data) //转对象，不然下面map方法报错
    const categorySub=mongoose.model('categorySub')
    let saveCount=0;
    data.RECORDS.map((value,index)=>{
      const newcategorySub=new categorySub(value)
      newcategorySub.save().then(()=>{
        saveCount++
        console.log('成功'+saveCount)
      }).catch(err=>{
        console.log('失败'+err)
      })

    })


  })
  ctx.body='开始导入商品子类'
})

// 查询商品详情数据接口 需要传goodsId商品ID
router.post('/getDetailGoodsInfo',async(ctx)=>{
  try{
    let goodsId=ctx.request.body.goodsId //接收前端传过来的商品ID，根据商品ID查询出来商品详情
    console.log(goodsId);
    const goods=mongoose.model('Goods') //查询和插入，都需要根据建好的对应的模型
    let result=await goods.findOne({ID:goodsId}).exec()
    ctx.body={
      code:200,
      message:result
    }
  }catch(err){
    console.log(err)
    ctx.body={code:500,message:err}
  }
})

// 查询商品大类别API
router.get('/getCategoryList',async(ctx)=>{
  try{
    const category=mongoose.model('category')
    let result=await category.find().exec()  //查询所有
    ctx.body={code:200,message:result}
  }catch(err){
    ctx.body={code:500,message:err}
  }
})

// 查询商品小类别API，-->思路，点击一个大分类，显示对应的小类别
router.post('/getCategorySubList',async(ctx)=>{
  try{
    // console.log(ctx.request.body)  //如果用的是koa-bodyparser获取post请求参数，用的是ctx.request.body获得前端传过来的参数  { categoryId: '1' } 注意，别写错成直接ctx.body.参数，错误的
    let categoryId=ctx.request.body.categoryId  //传过来的大分类ID
    // let categoryId=1 //现在上面还没开始弄，这里写一个数据库存在的做测试
    const categorySub=mongoose.model('categorySub')
    let result=await categorySub.find({MALL_CATEGORY_ID:categoryId}).exec()
    ctx.body={code:200,message:result}
  }catch(err){
    ctx.body={code:500,message:err}
  }
})

// 根据商品类别查询对应的商品有哪些--> 思路： 传过来商品小分类id，列出该分类下所有的商品
router.post('/getGoodsListByCategorySubId',async(ctx)=>{
  try{
    let categorySubId=ctx.request.body.categoryId  //传过来的小分类ID
    let page=ctx.request.body.page //前端传过来的分页的信息
    let num=10  //一次返回10条
    let start=(page-1)*num
    // let categorySubId='402880e86016d1b5016016dd339c0006' //先拿数据库存在的一个代替
    const goods=mongoose.model('Goods')
    let rusult=await goods.find({SUB_ID:categorySubId}).skip(start).limit(num).exec()
    ctx.body={code:200,message:rusult}
  }catch(err){
    ctx.body={code:500,message:err}
  }
})

module.exports= router
